package com.AdvancedDemos.Stream流操作;

import java.util.Arrays;
import java.util.Comparator;
import java.util.function.Consumer;
import java.util.function.Function;

public class Stream流练习1 {
    public static void main(String[] args) {
        //练习:
        //存在如下字符串
        String s = "6 1 2 7 9 9 -3 10 8 5 2 -1 0";
        //需求:使用Stream流完成
        //去重+反自然排序后进行打印
//        //1.切割字符串
//        String[] strs = s.split(" ");
//        //2.从数组开启Stream流
//        Stream<String> stream = Arrays.stream(strs);
//        //3.去重
//        Stream<String> distinct = stream.distinct();
//        //4.将String转换为Integer,再进行排序
//        Stream<Integer> integerStream = distinct.map(new Function<String, Integer>() {
//            @Override
//            public Integer apply(String s) {
////                return Integer.valueOf(s);
//                //或者
//                return Integer.parseInt(s);//变成int再自动装箱
//            }
//        });
//        //5.反自然排序
//        Stream<Integer> sorted = integerStream.sorted(new Comparator<Integer>() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                return o2 - o1;
//            }
//        });
//        //6.打印
//        sorted.forEach(integer -> System.out.print(integer + " "));//10 9 8 7 6 5 2 1 0 -1 -3


        //使用链式调用进行整合
//        Arrays.stream(s.split(" ")).distinct().map(Integer::valueOf).sorted((o1, o2) -> o2 - o1).forEach(System.out::println);
        Arrays.stream(s.split(" ")).distinct().map(new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                return Integer.valueOf(s);
            }
        }).sorted(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2 - o1;
            }
        }).forEach(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) {
                System.out.print(integer + " ");
            }
        });//10 9 8 7 6 5 2 1 0 -1 -3


    }
}
